The present invention relates to information gathering applications within computer systems, and more particularly, to a method and apparatus for automatically extracting information specific to a computer system from any of a plurality of vendors.
A typical computer system has information regarding specifications or functionalities for that computer system stored within a predetermined location of a non-volatile memory device, such as a ROM memory device. An example of such information is BIOS (Basic Input/Output System) identification information. BIOS identification information for a computer system is used for various purposes, as known to one of ordinary skill in the art.
For example, BIOS identification information for a computer system may include the brand name, the model name, the BIOS date, and the BIOS version of the computer system. Such information may be used for inventory and asset tracking of a plurality of computer systems. In addition, such information may be used for determining whether a computer system is Y2K compliant. Y2K compliance indicates whether the computer system will operate properly with dates after the year 1999, and Y2K compliance of a computer system is currently a significant issue, as known to one of ordinary skill in the art.
In addition, BIOS identification information may be desired for different models of computer systems from any of a plurality of vendors. A typical large organization uses computer systems from multiple vendors. In addition, because the computer industry is advancing rapidly with time, each vendor provides many different models of computer systems. Thus, a large organization typically has numerous different models of computer systems from various computer system vendors.
A computer system from any of the plurality of vendors has raw BIOS data including BIOS identification information regarding that computer system stored at a predetermined location within a non-volatile memory device such as a ROM memory device of the computer system according to industry standards. However, each vendor includes such information within the raw BIOS data in a different format for different computer system models. Furthermore, a vendor may provide an application specific only to that vendor and that computer system model for determining and using such BIOS identification information.
In the prior art, the BIOS identification information of a computer system may be determined by such an application from the particular vendor for that particular computer system model. However, a collection of such applications from the plurality of vendors for determining the BIOS identification information for each of the computer system models may be needed. Acquisition and maintenance of the collection of a specific application for determining the BIOS identification information for each of numerous models of computer systems from the various vendors is likely to be arduous and costly.
Also in the prior art, the BIOS identification information for a computer system from any of the plurality of vendors may be determined by manually reading off such information from the unit or the case of the computer system or by reading the computer screen when the computer system is first booted up. However, such manual determination of the BIOS identification information for each of a large number of computer systems from the plurality of vendors is arduous and prone to human error.
Thus, an application is desired that runs on any computer system from a plurality of vendors for automatically extracting such BIOS identification information for a computer system from any of the plurality of vendors.
In accordance with a general aspect of the present invention, an application is provided for automatically extracting BIOS (Basic Input/Output System) identification information for a computer system from any of a plurality of vendors.
Typically, a computer system from any of the plurality of vendors has raw BIOS data, containing BIOS identification information, stored at a predetermined location of a static storage device such as a ROM device of the computer system according to industry standards. However, the raw BIOS data within the computer system is formatted differently for each of the plurality of vendors. In addition, the raw BIOS data contains a large number of non-ASCII characters that obscure the useful BIOS identification information within the raw BIOS data. Advantageously, an embodiment of the present invention processes such raw BIOS data to reformat the raw BIOS data to a BIOS variable such that BIOS identification information is more easily accessible from the BIOS variable.
In a general aspect of the present invention, to reformat the raw BIOS data, the raw BIOS data is searched for each of at least one keyword. For each existing keyword that is found within the raw BIOS data, the raw BIOS data is further searched outward from the existing keyword within the raw BIOS data until a non-ASCII character is encountered to generate a respective resultant text string. The respective resultant text string includes the existing keyword and any ASCII characters to the left and right of the existing keyword until a non-ASCII character is encountered within the raw BIOS data. The respective resultant text string for each existing keyword is appended to a BIOS variable. The BIOS variable is then searched for at least one of a BIOS date, a brand name, a model name, and a BIOS version of the computer system.
In reformatting the raw BIOS data, any extra space character may be removed within the BIOS variable when a sequence of more than one space character is found within the BIOS variable such that only one space character remains for each of the sequence of more than one space character. In addition, a separator character may be inserted between each of the respective resultant text string within the BIOS variable.
Once the raw BIOS data has been reformatted to the BIOS variable, the BIOS variable is searched for predetermined text strings for extracting the brand name, the model name, the BIOS date, and the BIOS version of the computer system.
In this manner, a searching and parsing routine of an embodiment of the present invention processes the raw BIOS data within a computer system from any of the plurality of vendors irrespective of the initial format of the raw BIOS data to generate the BIOS variable. In addition, for certain embodiments of the present invention, predetermined text strings, corresponding to the plurality of vendors, are searched for within the BIOS variable such that the brand name, the model name, the BIOS date, and the BIOS version may be determined for a computer system from any of the plurality of vendors.
Alternatively, the BIOS variable may be processed using a check sum technique with a look-up table for determining the brand name and the model name of the computer system from any of the plurality of vendors.
These and other features and advantages of the present invention will be better understood by considering the following detailed description of the invention which is presented with the attached drawings.